home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Kant Generator Pro 1.0.1 / source / Shell ƒ / file utilities.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  3.2 KB  |  149 lines  |  [TEXT/MMCC]

  1. #include "file utilities.h"
  2. #include <Processes.h>
  3.  
  4. OSErr GetApplicationFSSpec(FSSpec *theFS)
  5. {
  6.     OSErr                oe;
  7.     ProcessSerialNumber    psn;
  8.     ProcessInfoRec        info;
  9.     
  10.     oe=GetCurrentProcess(&psn);
  11.     if (oe==noErr)
  12.     {
  13.         info.processInfoLength=60;
  14.         info.processName=0L;
  15.         info.processAppSpec=theFS;
  16.         oe=GetProcessInformation(&psn, &info);
  17.     }
  18.     
  19.     return oe;
  20. }
  21.  
  22. OSErr GetApplicationVRefNum(short *vRefNum)
  23. {
  24.     FSSpec            theFS;
  25.     OSErr            err;
  26.     
  27.     err=GetApplicationFSSpec(&theFS);
  28.     if (err!=noErr)
  29.         return err;
  30.     
  31.     *vRefNum=theFS.vRefNum;
  32.     
  33.     return noErr;
  34. }
  35.  
  36. OSErr GetApplicationParID(long *parID)
  37. {
  38.     FSSpec            theFS;
  39.     OSErr            err;
  40.     CInfoPBRec        pb;
  41.     
  42.     err=GetApplicationFSSpec(&theFS);
  43.     if (err!=noErr)
  44.         return err;
  45.     
  46.     pb.hFileInfo.ioCompletion=0L;
  47.     pb.hFileInfo.ioNamePtr=theFS.name;
  48.     pb.hFileInfo.ioVRefNum=theFS.vRefNum;
  49.     pb.hFileInfo.ioFDirIndex=0;
  50.     pb.hFileInfo.ioDirID=theFS.parID;
  51.     err=PBGetCatInfo(&pb, FALSE);
  52.     if (err!=noErr)
  53.         return err;
  54.     
  55.     *parID=pb.hFileInfo.ioFlParID;
  56.     
  57.     return noErr;
  58. }
  59.  
  60. OSType GetFileType(FSSpec *myFSS)
  61. {
  62.     HParamBlockRec    paramBlock;
  63.     
  64.     paramBlock.fileParam.ioCompletion=0L;
  65.     paramBlock.fileParam.ioNamePtr=myFSS->name;
  66.     paramBlock.fileParam.ioVRefNum=myFSS->vRefNum;
  67.     paramBlock.fileParam.ioFDirIndex=0;
  68.     paramBlock.fileParam.ioDirID=myFSS->parID;
  69.     if (PBHGetFInfo(¶mBlock, FALSE)!=noErr)
  70.         return 0L;
  71.     
  72.     return paramBlock.fileParam.ioFlFndrInfo.fdType;
  73. }
  74.  
  75. unsigned long GetModificationDate(FSSpec *myFSS)
  76. {
  77.     HParamBlockRec    paramBlock;
  78.     
  79.     paramBlock.fileParam.ioCompletion=0L;
  80.     paramBlock.fileParam.ioNamePtr=myFSS->name;
  81.     paramBlock.fileParam.ioVRefNum=myFSS->vRefNum;
  82.     paramBlock.fileParam.ioFDirIndex=0;
  83.     paramBlock.fileParam.ioDirID=myFSS->parID;
  84.     if (PBHGetFInfo(¶mBlock, FALSE)!=noErr)
  85.         return 0L;
  86.     
  87.     return paramBlock.fileParam.ioFlMdDat;
  88. }
  89.  
  90. OSErr SetModificationDate(FSSpec *myFSS, unsigned long theDate)
  91. {
  92.     HParamBlockRec    paramBlock;
  93.     OSErr            err;
  94.     
  95.     paramBlock.fileParam.ioCompletion=0L;
  96.     paramBlock.fileParam.ioNamePtr=myFSS->name;
  97.     paramBlock.fileParam.ioVRefNum=myFSS->vRefNum;
  98.     paramBlock.fileParam.ioFDirIndex=0;
  99.     paramBlock.fileParam.ioDirID=myFSS->parID;
  100.     if ((err=PBHGetFInfo(¶mBlock, FALSE))!=noErr)
  101.         return err;
  102.     
  103.     FlushVol(0L, myFSS->vRefNum);
  104.     
  105.     paramBlock.fileParam.ioFlMdDat=theDate;
  106.     paramBlock.fileParam.ioCompletion=0L;
  107.     paramBlock.fileParam.ioNamePtr=myFSS->name;
  108.     paramBlock.fileParam.ioVRefNum=myFSS->vRefNum;
  109.     paramBlock.fileParam.ioFDirIndex=0;
  110.     paramBlock.fileParam.ioDirID=myFSS->parID;
  111.     err=PBHSetFInfo(¶mBlock, FALSE);
  112.     
  113.     return err;
  114. }
  115.  
  116. OSErr TouchFolder(FSSpec *theFS)
  117. {
  118.     CInfoPBRec        pb;
  119.     OSErr            isHuman;
  120.     
  121.     pb.dirInfo.ioCompletion=0L;
  122.     pb.dirInfo.ioVRefNum=theFS->vRefNum;
  123.     pb.dirInfo.ioDrDirID=theFS->parID;
  124.     pb.dirInfo.ioNamePtr=theFS->name;
  125.     pb.dirInfo.ioFDirIndex=0;
  126.     if ((isHuman=PBGetCatInfo(&pb, FALSE))!=noErr)
  127.     {
  128.         pb.dirInfo.ioDrDirID=pb.dirInfo.ioDrParID;
  129.         pb.dirInfo.ioFDirIndex=0;
  130.         GetDateTime(&(pb.dirInfo.ioDrMdDat));
  131.         isHuman=PBSetCatInfo(&pb, FALSE);
  132.     }
  133.     
  134.     return isHuman;
  135. }
  136.  
  137. OSErr FileExists(FSSpec *theFS)
  138. {
  139.     CInfoPBRec        pb;
  140.     
  141.     pb.dirInfo.ioCompletion=0L;
  142.     pb.dirInfo.ioVRefNum=theFS->vRefNum;
  143.     pb.dirInfo.ioDrDirID=theFS->parID;
  144.     pb.dirInfo.ioNamePtr=theFS->name;
  145.     pb.dirInfo.ioFDirIndex=0;
  146.     
  147.     return PBGetCatInfo(&pb, FALSE);
  148. }
  149.